package com.zzyl.nursing.service;

import java.util.List;

import com.zzyl.nursing.domain.CheckIn;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzyl.nursing.dto.CheckInApplyDto;
import com.zzyl.nursing.vo.CheckInDetailVo;

/**
 * 入住表Service接口
 *
 * @Author: Zhy
 * @Date: 2025-02-25
 */
public interface ICheckInService extends IService<CheckIn> {
	/**
	 * 查询入住表
	 *
	 * @param id 入住表主键
	 * @return 入住表
	 */
	public CheckIn selectCheckInById(Long id);

	/**
	 * 查询入住表列表
	 *
	 * @param checkIn 入住表
	 * @return 入住表集合
	 */
	public List<CheckIn> selectCheckInList(CheckIn checkIn);

	/**
	 * 新增入住表
	 *
	 * @param checkIn 入住表
	 * @return 结果
	 */
	public int insertCheckIn(CheckIn checkIn);

	/**
	 * 修改入住表
	 *
	 * @param checkIn 入住表
	 * @return 结果
	 */
	public int updateCheckIn(CheckIn checkIn);

	/**
	 * 批量删除入住表
	 *
	 * @param ids 需要删除的入住表主键集合
	 * @return 结果
	 */
	public int deleteCheckInByIds(Long[] ids);

	/**
	 * 删除入住表信息
	 *
	 * @param id 入住表主键
	 * @return 结果
	 */
	public int deleteCheckInById(Long id);

	/**
	 * 申请入住
	 *
	 * @return:
	 * @param:
	 */
	void apply(CheckInApplyDto checkInApplyDto);

	/**
	 * 入住详情
	 *
	 * @return:
	 * @param: id 入住id
	 */
	CheckInDetailVo getCheckInInfo(Long id);

	/**
	 * 根据老人ID查询入住记录
	 *
	 * @param elderId 老人ID
	 * @return 入住记录
	 */
	CheckIn selectCheckInByElderId(Long elderId);

	/**
	 * 按入住状态查询入住记录
	 * @param status 状态（0=已入住，1=已退住）
	 * @return 入住记录集合
	 */
	List<CheckIn> selectCheckInListByStatus(int status);
}
